package generadordescktop;

import generadorabm.Controladora;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author agustin
 */
public class ModeloComboTipoAtributos extends AbstractListModel implements ComboBoxModel {

    boolean loEncontro;
    String[] items;//cadena q recibira los datos a mostrar.
    String itemSelecionado = null;

    public ModeloComboTipoAtributos() {
        items = new String[0];
        for (int i = 0; i < 2; i++) {
            if (i == 1) {
                for (String s : Controladora.getInstance().leerArchivoTipos()) {
                    boolean bol = true;
                    String tipo = "";
                    for (char c : s.toCharArray()) {
                        if (bol) {
                            if (c != '|') {
                                tipo += c;
                            } else {
                                bol = false;
                            }
                        }
                    }
                    if (!tipo.equals("")) {
                        if (!tipo.equals("Main")) {
                            if (!tipo.equals("DataBase")) {
                                this.agregaItem(tipo);
                            }
                        }
                    }
                }
            } else {
                for (String s : Controladora.getInstance().leerArchivoClases()) {
                    boolean bol = true;
                    String tipo = "";
                    String inter = "";
                    String persist = "";
                    int cont = 0;
                    if (s.toCharArray().length > 9) {
                        for (char c : s.toCharArray()) {
                            if (bol) {
                                if (c != '|') {
                                    tipo += c;
                                } else {
                                    bol = false;
                                }
                            }
                            if (bol == false && c != ' ') {
                                inter += c;
                            }
                        }
                    }
                    if (tipo.toCharArray().length > 12) {
                        for (int r = 0; r < 12; r++) {
                            persist += tipo.toCharArray()[r];
                        }
                    }
                    if (!persist.equals("Persistencia")) {
                        if (!inter.toLowerCase().equals("|interface")) {
                            if (!tipo.equals("")) {
                                if (!tipo.equals("Main")) {
                                    if (!tipo.equals("DataBase")) {
                                        this.agregaItem(tipo);
                                    }
                                }
                            }
                        }
                    }
                }

            }
        }
    }

    public Object getElementAt(int index) {
        return items[index];
    }

    public int getSize() {
        return items.length;
    }

    public void setSelectedItem(Object item) {
        itemSelecionado = (String) item;
        fireContentsChanged(this, -1, -1);
    }

    public void agregaItem(String cadena) {
        String[] nuevoItems = new String[items.length + 1];
        for (int i = 0; i < items.length; i++) {
            nuevoItems[i] = items[i];
        }
        nuevoItems[items.length] = cadena;
        items = nuevoItems;
        fireContentsChanged(this, -1, -1);
    }

    public boolean buscaItem(String itemABuscar) {
        for (int i = 0; i < items.length; i++) {
            if (itemABuscar == items[i]) {
                loEncontro = true;
                break;
            } else {
                loEncontro = false;
            }
        }
        return loEncontro;
    }

    public Object getSelectedItem() { //metodo implementado por la interface  JComboBoxModel
        return itemSelecionado;

    }
}
